package cn.jinbyte.web.model;

import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;

/**
 * 日志可选包含信息
 *
 * @author jinty
 * @since 1.0.0
 */
public enum LogInclude {

    /**
     * 请求头（默认）
     */
    REQUEST_HEADERS,

    /**
     * 请求体（如包含请求体，则请求参数无效）
     */
    REQUEST_BODY,

    /**
     * 请求参数（默认）
     */
    REQUEST_PARAM,

    /**
     * 响应头（默认）
     */
    RESPONSE_HEADERS,

    /**
     * 响应体（如包含响应体，则响应参数无效）
     */
    RESPONSE_BODY,

    /**
     * 响应参数（默认）
     */
    RESPONSE_PARAM,
    ;

    private static final Set<LogInclude> DEFAULT_INCLUDES;

    static {
        Set<LogInclude> defaultIncludes = new LinkedHashSet<>();
        defaultIncludes.add(LogInclude.REQUEST_HEADERS);
        defaultIncludes.add(LogInclude.RESPONSE_HEADERS);
        defaultIncludes.add(LogInclude.REQUEST_PARAM);
        defaultIncludes.add(LogInclude.RESPONSE_PARAM);
        DEFAULT_INCLUDES = Collections.unmodifiableSet(defaultIncludes);
    }

    /**
     * 获取默认包含信息
     *
     * @return 默认包含信息
     */
    public static Set<LogInclude> defaultIncludes() {
        return DEFAULT_INCLUDES;
    }
}
